Ndërtoni një asistent të inteligjencës artificiale me email biznesi me Gemma

Trajtimi i pyetjeve të klientëve, përfshirë emailet, është një pjesë e domosdoshme e drejtimit të shumë bizneseve, por shpejt mund të bëhet dërrmuese. Me pak përpjekje, modelet e inteligjencës artificiale (AI) si Gemma mund të ndihmojnë në lehtësimin e kësaj pune.

Çdo biznes i trajton pyetjet si emailet pak më ndryshe, kështu që është e rëndësishme të jeni në gjendje të përshtatni teknologjitë si AI gjeneruese me nevojat e biznesit tuaj. Ky projekt trajton problemin specifik të nxjerrjes së informacionit të porosisë nga emailet në një furrë buke në të dhëna të strukturuara, në mënyrë që të mund të shtohet shpejt në një sistem të trajtimit të porosive. Duke përdorur 10 deri në 20 shembuj pyetjesh dhe rezultatin që dëshironi, mund të akordoni një model Gemma për të përpunuar emailet nga klientët tuaj, t'ju ndihmojë të përgjigjeni shpejt dhe të integroheni me sistemet ekzistuese të biznesit tuaj. Ky projekt është ndërtuar si një model aplikimi i AI që mund ta zgjeroni dhe përshtatni për të marrë vlerë nga modelet Gemma për biznesin tuaj.

Për një përmbledhje video të projektit dhe si ta zgjeroni atë, duke përfshirë njohuri nga njerëzit që e ndërtuan atë, shikoni videon e Business Email AI Assistant Build with Google AI. Ju gjithashtu mund të rishikoni kodin për këtë projekt në depon e kodit të Gemma Cookbook . Përndryshe, mund të filloni të zgjeroni projektin duke përdorur udhëzimet e mëposhtme.

Vështrim i përgjithshëm

Ky udhëzues ju udhëzon në konfigurimin, ekzekutimin dhe zgjerimin e një aplikacioni asistent të postës elektronike të biznesit të ndërtuar me Gemma, Python dhe Flask. Projekti ofron një ndërfaqe bazë të përdoruesit të internetit që mund ta modifikoni për t'iu përshtatur nevojave tuaja. Aplikacioni është ndërtuar për të nxjerrë të dhëna nga emailet e klientëve në një strukturë për një furrë buke fiktive. Ju mund ta përdorni këtë model aplikacioni për çdo detyrë biznesi që përdor hyrjen dhe daljen e tekstit.

Pamja e ekranit të ndërfaqes së përdoruesit të aplikacionit në internet

Figura 1. Ndërfaqja e përdoruesit të projektit për përpunimin e kërkesave të postës elektronike të furrës

Kërkesat e harduerit

Ekzekutoni këtë proces sintonizimi në një kompjuter me një njësi përpunimi grafik (GPU) ose një njësi përpunimi tensor (TPU) dhe memorie të mjaftueshme GPU ose TPU për të mbajtur modelin ekzistues, plus të dhënat e akordimit. Për të ekzekutuar konfigurimin e akordimit në këtë projekt, ju nevojiten rreth 16 GB memorie GPU, afërsisht e njëjta sasi RAM e zakonshme dhe një minimum prej 50 GB hapësirë ​​​​në disk.

Ju mund të ekzekutoni pjesën e akordimit të modelit Gemma të këtij tutoriali duke përdorur një mjedis Colab me një kohë ekzekutimi GPU T4 . Nëse po e ndërtoni këtë projekt në një shembull Google Cloud VM , konfiguroni shembullin duke ndjekur këto kërkesa:

  • Pajisja GPU : Kërkohet një NVIDIA T4 për të ekzekutuar këtë projekt (rekomandohet NVIDIA L4 ose më i lartë)
  • Sistemi operativ : Zgjidhni një opsion Deep Learning në Linux , veçanërisht Deep Learning VM me CUDA 12.3 M124 me drejtues të softuerit GPU të para-instaluar.
  • Madhësia e diskut të nisjes : Siguroni të paktën 50 GB hapësirë ​​në disk për të dhënat, modelet dhe softuerin tuaj mbështetës.

Vendosja e projektit

Këto udhëzime ju udhëzojnë në përgatitjen e këtij projekti për zhvillim dhe testim. Hapat e përgjithshëm të konfigurimit përfshijnë instalimin e softuerit parakusht, klonimin e projektit nga depoja e kodit, vendosjen e disa variablave të mjedisit, instalimin e bibliotekave Python dhe testimin e aplikacionit në internet.

Instaloni dhe konfiguroni

Ky projekt përdor Python 3 dhe mjedise virtuale ( venv ) për të menaxhuar paketat dhe për të ekzekutuar aplikacionin. Udhëzimet e mëposhtme të instalimit janë për një makinë pritës Linux.

Për të instaluar softuerin e kërkuar:

  • Instaloni Python 3 dhe paketën e mjedisit virtual venv për Python:

    sudo apt update
    sudo apt install git pip python3-venv
    

Klononi projektin

Shkarkoni kodin e projektit në kompjuterin tuaj të zhvillimit. Ju duhet softueri i kontrollit të burimit git për të marrë kodin burimor të projektit.

Për të shkarkuar kodin e projektit:

  1. Klononi depon e git duke përdorur komandën e mëposhtme:

    git clone https://github.com/google-gemini/gemma-cookbook.git
    
  2. Opsionale, konfiguroni depon tuaj lokale të git për të përdorur arkëtimin e rrallë, në mënyrë që të keni vetëm skedarët për projektin:

    cd gemma-cookbook/
    git sparse-checkout set Demos/business-email-assistant/
    git sparse-checkout init --cone
    

Instaloni bibliotekat e Python

Instaloni bibliotekat e Python me mjedisin virtual venv Python të aktivizuar për të menaxhuar paketat dhe varësitë e Python. Sigurohuni që të aktivizoni mjedisin virtual të Python përpara se të instaloni bibliotekat e Python me instaluesin pip . Për më shumë informacion rreth përdorimit të mjediseve virtuale Python, shihni dokumentacionin Python venv .

Për të instaluar bibliotekat e Python:

  1. Në një dritare terminali, lundroni te drejtoria business-email-assistant :

    cd Demos/business-email-assistant/
    
  2. Konfiguro dhe aktivizo mjedisin virtual Python (venv) për këtë projekt:

    python3 -m venv venv
    source venv/bin/activate
    
  3. Instaloni bibliotekat e kërkuara të Python për këtë projekt duke përdorur skriptin setup_python :

    ./setup_python.sh
    

Vendosni variablat e mjedisit

Ky projekt kërkon disa variabla mjedisore për të ekzekutuar, duke përfshirë një emër përdoruesi Kaggle dhe një token Kaggle API. Ju duhet të keni një llogari Kaggle dhe të kërkoni qasje në modelet Gemma për t'i shkarkuar ato. Për këtë projekt, ju shtoni emrin tuaj të përdoruesit Kaggle dhe tokenin Kaggle API në dy skedarë .env , të cilët lexohen përkatësisht nga aplikacioni në ueb dhe programi i akordimit.

Për të vendosur variablat e mjedisit:

  1. Merrni emrin tuaj të përdoruesit të Kaggle dhe çelësin tuaj token duke ndjekur udhëzimet në dokumentacionin Kaggle .
  2. Merrni akses në modelin Gemma duke ndjekur udhëzimet për të hyrë në Gemma në faqen Gemma Setup .
  3. Krijoni skedarë të ndryshueshëm të mjedisit për projektin, duke krijuar një skedar teksti .envsecilën nga këto vende në klonin tuaj të projektit:
    email-processing-webapp/.env
    model-tuning/.env
    
  4. Pas krijimit të skedarëve të tekstit .env , shtoni cilësimet e mëposhtme në të dy skedarët:

    KAGGLE_USERNAME=<YOUR_KAGGLE_USERNAME_HERE>
    KAGGLE_KEY=<YOUR_KAGGLE_KEY_HERE>
    

Ekzekutoni dhe testoni aplikacionin

Pasi të keni përfunduar instalimin dhe konfigurimin e projektit, ekzekutoni aplikacionin në internet për të konfirmuar që e keni konfiguruar saktë. Ju duhet ta bëni këtë si një kontroll bazë përpara se të redaktoni projektin për përdorimin tuaj.

Për të ekzekutuar dhe testuar projektin:

  1. Në një dritare terminali, lundroni te drejtoria email-processing-webapp :

    cd business-email-assistant/email-processing-webapp/
    
  2. Ekzekutoni aplikacionin duke përdorur skriptin run_app :

    ./run_app.sh
    
  3. Pas nisjes së aplikacionit në ueb, kodi i programit liston një URL ku mund të shfletoni dhe provoni. Në mënyrë tipike, kjo adresë është:

    http://127.0.0.1:5000/
    
  4. Në ndërfaqen e internetit, shtypni butonin Merr të dhënat poshtë fushës së parë të hyrjes për të gjeneruar një përgjigje nga modeli.

Përgjigja e parë nga modeli pasi të keni ekzekutuar aplikacionin zgjat më shumë pasi duhet të përfundojë hapat e inicializimit në ekzekutimin e gjeneratës së parë. Kërkesat e mëvonshme të menjëhershme dhe gjenerimi në një aplikacion uebi tashmë të ekzekutuar përfundojnë në më pak kohë.

Zgjero aplikacionin

Pasi të keni ekzekutuar aplikacionin, mund ta zgjeroni atë duke modifikuar ndërfaqen e përdoruesit dhe logjikën e biznesit për ta bërë atë të funksionojë për detyrat që janë të rëndësishme për ju ose biznesin tuaj. Ju gjithashtu mund të modifikoni sjelljen e modelit Gemma duke përdorur kodin e aplikacionit duke ndryshuar përbërësit e kërkesës që aplikacioni dërgon te modeli gjenerues i AI.

Aplikacioni ofron udhëzime për modelin së bashku me të dhënat hyrëse nga përdoruesi një kërkesë të plotë të modelit. Ju mund t'i modifikoni këto udhëzime për të ndryshuar sjelljen e modelit, si p.sh. specifikimi i emrave të parametrave dhe strukturës së JSON që do të gjenerohet. Një mënyrë më e thjeshtë për të ndryshuar sjelljen e modelit është të jepni udhëzime ose udhëzime shtesë për përgjigjen e modelit, si p.sh. të specifikoni që përgjigjet e krijuara nuk duhet të përfshijnë ndonjë formatim Markdown.

Për të modifikuar udhëzimet e menjëhershme:

  1. Në projektin e zhvillimit, hapni skedarin e kodit business-email-assistant/email-processing-webapp/app.py .
  2. Në kodin app.py , shtoni udhëzime shtesë në funksionin get_prompt():

    def get_prompt():
      return """
        Extract the relevant details of this request and return them in
        JSON code, with no additional markdown formatting:\n"""
    

Ky shembull shton frazën "pa formatim shtesë të shënimit" në udhëzimet.

Sigurimi i udhëzimeve shtesë të menjëhershme mund të ndikojë fuqishëm në rezultatin e gjeneruar dhe kërkon shumë më pak përpjekje për t'u zbatuar. Së pari duhet ta provoni këtë metodë për të parë nëse mund të merrni sjelljen që dëshironi nga modeli. Megjithatë, përdorimi i udhëzimeve të menjëhershme për të modifikuar sjelljen e një modeli Gemma ka kufijtë e tij. Në veçanti, kufiri i përgjithshëm i shenjave hyrëse të modelit, i cili është 8,192 tokena për Gemma 2, kërkon që ju të balanconi udhëzimet e detajuara të menjëhershme me madhësinë e të dhënave të reja që jepni, në mënyrë që të qëndroni nën atë kufi.

Akordoni modelin

Kryerja e rregullimit të saktë të një modeli Gemma është mënyra e rekomanduar për ta bërë atë të përgjigjet me më shumë besueshmëri për detyra specifike. Në veçanti, nëse dëshironi që modeli të gjenerojë JSON me një strukturë specifike, duke përfshirë parametra të emërtuar në mënyrë specifike, duhet të konsideroni akordimin e modelit për atë sjellje. Në varësi të detyrës që dëshironi të kryejë modeli, mund të arrini funksionalitetin bazë me 10 deri në 20 shembuj. Ky seksion i tutorialit shpjegon se si të konfiguroni dhe ekzekutoni rregullimin e imët në një model Gemma për një detyrë specifike.

Udhëzimet e mëposhtme shpjegojnë se si të kryeni funksionin e rregullimit të imët në një mjedis VM, megjithatë, mund ta kryeni këtë operacion akordimi duke përdorur fletoren e lidhur Colab për këtë projekt.

Kërkesat e harduerit

Kërkesat llogaritëse për rregullimin e imët janë të njëjta me kërkesat e harduerit për pjesën tjetër të projektit. Mund ta ekzekutoni operacionin e akordimit në një mjedis Colab me një kohë funksionimi GPU T4 nëse i kufizoni shenjat hyrëse në 256 dhe madhësinë e grupit në 1.

Përgatitni të dhënat

Para se të filloni akordimin e një modeli Gemma, duhet të përgatisni të dhëna për akordim. Kur akordoni një model për një detyrë specifike, keni nevojë për një grup shembujsh kërkesash dhe përgjigjesh. Këta shembuj duhet të tregojnë tekstin e kërkesës, pa asnjë udhëzim , dhe tekstin e pritur të përgjigjes. Për të filluar, duhet të përgatisni një grup të dhënash me rreth 10 shembuj. Këta shembuj duhet të përfaqësojnë një shumëllojshmëri të plotë kërkesash dhe përgjigjet ideale. Sigurohuni që kërkesat dhe përgjigjet të mos jenë të përsëritura, pasi kjo mund të shkaktojë që përgjigjet e modeleve të jenë të përsëritura dhe të mos përshtaten siç duhet me variacionet e kërkesave. Nëse po akordoni modelin për të prodhuar një format të strukturuar të dhënash, sigurohuni që të gjitha përgjigjet e dhëna të jenë në përputhje të plotë me formatin e daljes së të dhënave që dëshironi. Tabela e mëposhtme tregon disa regjistrime mostra nga grupi i të dhënave të këtij shembulli të kodit:

Kërkesa Përgjigje
Përshëndetje Indian Bakery Central,\nA keni rastësisht 10 pendë dhe tridhjetë bundi lado në dorë? Gjithashtu a shitni ëmbëlsira me aromë vanilje dhe me shije çokollate. Unë jam duke kërkuar për një madhësi 6 inç { "type": "inquiry", "artikujt": [ { "emri": "pendas", "sasia": 10 }, { "emri": "bundi ladoos", "sasia": 30 }, { "emri": "tortë", "mbushja": null, "frosting": "vanilje", "aromë:"]}": "
Unë pashë biznesin tuaj në Google Maps. A shet xhelabi dhe gulab jamun? { "lloj": "inquiry", "artikuj": [ { "emri": "jellabi", "sasia": null }, { "emri": "gulab jamun", "sasia": null } ] }

Tabela 1. Lista e pjesshme e të dhënave të akordimit për nxjerrjen e të dhënave të emailit të furrës.

Formati dhe ngarkimi i të dhënave

Ju mund t'i ruani të dhënat tuaja të akordimit në çdo format që është i përshtatshëm, duke përfshirë regjistrimet e bazës së të dhënave, skedarët JSON, CSV ose skedarët e tekstit të thjeshtë, për sa kohë që keni mjetet për të tërhequr të dhënat me kodin Python. Ky projekt lexon skedarët JSON nga një direktori data në një grup objektesh fjalori. Në këtë shembull të programit rrotullues, grupi i të dhënave akorduese ngarkohet në modulin model-tuning/main.py duke përdorur funksionin prepare_tuning_dataset() :

def prepare_tuning_dataset():
    # collect data from JSON files
    prompt_data = read_json_files_to_dicts("./data")
    ...

Siç u përmend më parë, ju mund ta ruani grupin e të dhënave në një format që është i përshtatshëm, për sa kohë që mund t'i rikuperoni kërkesat me përgjigjet e lidhura dhe t'i grumbulloni ato në një varg teksti që përdoret si një rekord akordues.

Mblidhni rekorde akordimi

Për procesin aktual të akordimit, programi mbledh çdo kërkesë dhe përgjigje në një varg të vetëm me udhëzimet e menjëhershme dhe përmbajtjen e përgjigjes. Programi i akordimit më pas shënon vargun për konsum nga modeli. Ju mund ta shihni kodin për montimin e një rekordi akordimi në funksionin e modulit model-tuning/main.py prepare_tuning_dataset() , si më poshtë:

def prepare_tuning_dataset():
    ...
    # prepare data for tuning
    tuning_dataset = []
    template = "{instruction}\n{response}"

    for prompt in prompt_data:
        tuning_dataset.append(template.format(instruction=prompt["prompt"],
                                              response=prompt["response"]))

    return tuning_dataset

Ky funksion i merr të dhënat si hyrje të tij dhe i formaton duke shtuar një ndërprerje të linjës midis udhëzimit dhe përgjigjes.

Gjeneroni pesha të modelit

Pasi të keni vendosur dhe ngarkuar të dhënat e akordimit, mund të ekzekutoni programin e akordimit. Procesi i akordimit për këtë aplikacion shembull përdor bibliotekën Keras NLP për të akorduar modelin me një Përshtatje me gradë të ulët , ose teknikë LoRA, për të gjeneruar pesha të reja të modelit. Krahasuar me akordimin me saktësi të plotë, përdorimi i LoRA është dukshëm më efikas në memorie sepse përafron ndryshimet në peshat e modelit. Më pas mund t'i mbivendosni këto pesha të përafërta mbi peshat ekzistuese të modelit për të ndryshuar sjelljen e modelit.

Për të kryer akordimin dhe llogaritjen e peshave të reja:

  1. Në një dritare të terminalit, lundroni te direktoria model-tuning/ .

    cd business-email-assistant/model-tuning/
    
  2. Ekzekutoni procesin e akordimit duke përdorur skriptin tune_model :

    ./tune_model.sh
    

Procesi i akordimit zgjat disa minuta në varësi të burimeve tuaja llogaritëse të disponueshme. Kur përfundon me sukses, programi i akordimit shkruan skedarë të rinj *.h5 peshë në drejtorinë model-tuning/weights me formatin e mëposhtëm:

gemma2-2b_inquiry_tuned_4_epoch##.lora.h5

Zgjidhja e problemeve

Nëse akordimi nuk përfundon me sukses, ka dy arsye të mundshme:

  • Pa memorie ose burime të shteruara : Këto gabime ndodhin kur procesi i akordimit kërkon memorie që tejkalon memorien e disponueshme GPU ose memorien e CPU. Sigurohuni që nuk po ekzekutoni aplikacionin në ueb ndërsa procesi i akordimit është duke u ekzekutuar. Nëse po akordoni në një pajisje me 16 GB memorie GPU, sigurohuni që token_limit të jetë vendosur në 256 dhe batch_size1 .
  • Drejtuesit e GPU nuk janë të instaluar ose të papajtueshëm me JAX : Procesi i rrotullimit kërkon që pajisja llogaritëse të ketë të instaluar drejtues harduerësh që janë të pajtueshëm me versionin e bibliotekave JAX . Për më shumë detaje, shihni dokumentacionin e instalimit të JAX .

Vendosni modelin e akorduar

Procesi i akordimit gjeneron pesha të shumta bazuar në të dhënat e akordimit dhe numrin total të epokave të vendosura në aplikacionin e akordimit. Si parazgjedhje, programi akordues gjeneron 3 skedarë me peshë modeli, një për çdo epokë akordimi. Çdo epokë e njëpasnjëshme akordimi prodhon pesha që riprodhojnë më saktë rezultatet e të dhënave të akordimit. Ju mund të shihni normat e saktësisë për çdo epokë në daljen e terminalit të procesit të akordimit, si më poshtë:

...
8/8 ━━━━━━━━━━━━━━━━━━━━ 121s 195ms/step - loss: 0.5432 - sparse_categorical_accuracy: 0.5982
Epoch 2/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 194ms/step - loss: 0.3320 - sparse_categorical_accuracy: 0.6966
Epoch 3/3
8/8 ━━━━━━━━━━━━━━━━━━━━ 2s 192ms/step - loss: 0.2135 - sparse_categorical_accuracy: 0.7848

Ndërsa dëshironi që shkalla e saktësisë të jetë relativisht e lartë, rreth 0.80, ju nuk dëshironi që norma të jetë shumë e lartë, ose shumë afër 1.00, sepse kjo do të thotë se peshat i janë afruar tejkalimit të të dhënave të akordimit. Kur kjo ndodh, modeli nuk funksionon mirë në kërkesat që janë dukshëm të ndryshme nga shembujt e akordimit. Si parazgjedhje, skripti i vendosjes zgjedh peshat e epokës 3, të cilat zakonisht kanë një shkallë saktësie rreth 0,80.

Për të vendosur peshat e krijuara në aplikacionin në internet:

  1. Në një dritare terminali, lundroni te drejtoria model-tuning :

    cd business-email-assistant/model-tuning/
    
  2. Ekzekutoni procesin e akordimit duke përdorur skriptin deploy_weights :

    ./deploy_weights.sh
    

Pas ekzekutimit të këtij skripti, duhet të shihni një skedar të ri *.h5 në drejtorinë email-processing-webapp/weights/ .

Testoni modelin e ri

Pasi të keni vendosur peshat e reja në aplikacion, është koha të provoni modelin e akorduar rishtazi. Ju mund ta bëni këtë duke ridrejtuar aplikacionin në internet dhe duke gjeneruar një përgjigje.

Për të ekzekutuar dhe testuar projektin:

  1. Në një dritare terminali, lundroni te drejtoria email-processing-webapp :

    cd business-email-assistant/email-processing-webapp/
    
  2. Ekzekutoni aplikacionin duke përdorur skriptin run_app :

    ./run_app.sh
    
  3. Pas nisjes së aplikacionit në ueb, kodi i programit liston një URL ku mund të shfletoni dhe testoni, zakonisht kjo adresë është:

    http://127.0.0.1:5000/
    
  4. Në ndërfaqen e internetit, shtypni butonin Merr të dhënat poshtë fushës së parë të hyrjes për të gjeneruar një përgjigje nga modeli.

Tani keni akorduar dhe vendosur një model Gemma në një aplikacion! Eksperimentoni me aplikacionin dhe përpiquni të përcaktoni kufijtë e aftësisë gjeneruese të modelit të akorduar për detyrën tuaj. Nëse gjeni skenarë ku modeli nuk funksionon mirë, merrni parasysh shtimin e disa prej këtyre kërkesave në listën tuaj të të dhënave të shembullit të akordimit duke shtuar kërkesën dhe duke ofruar një përgjigje ideale. Më pas rinisni procesin e akordimit, ri-vendosni peshat e reja dhe provoni daljen.

Burime shtesë

Për më shumë informacion rreth këtij projekti, shihni depon e kodit të Gemma Cookbook . Nëse keni nevojë për ndihmë në ndërtimin e aplikacionit ose po kërkoni të bashkëpunoni me zhvillues të tjerë, shikoni serverin Google Developers Community Discord . Për më shumë projekte Build with Google AI, shikoni listën e luajtjes së videove .